/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * VentanaPrincipal.java
 *
 * Created on 21/11/2012, 11:57:47 PM
 */
package com.promesa.gui;

import com.promesa.hilo.BarraHilo;
import com.promesa.util.Util;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

/**
 *
 * @author Rolando
 */
public class VentanaPrincipal extends javax.swing.JFrame {

    private static VentanaPrincipal instancia;
    private List<String> archivosDescargadosCorrectamente;
    private static URL url1;

    /** Creates new form VentanaPrincipal */
    public VentanaPrincipal() {
        initComponents();
        this.setLocationRelativeTo(null);
        setIconImage(new ImageIcon(this.getClass().getResource("/com/promesa/img/main_icon.png")).getImage());
        archivosDescargadosCorrectamente = new ArrayList<String>();
        instancia = this;
        url1 = this.getClass().getResource("/com/promesa/img/icon_check_yes.png");
        scrArchivosDescargados.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {

            @Override
            public void adjustmentValueChanged(AdjustmentEvent e) {
                e.getAdjustable().setValue(e.getAdjustable().getMaximum());
            }
        });

    }

    public void agregarArchivoDescargadoCorrectamente(String nombreArchivo) {
        archivosDescargadosCorrectamente.add(nombreArchivo);
        String html = "<html><table>";
        for (String string : archivosDescargadosCorrectamente) {
            html += "<tr><td><img src=\"" + url1 + "\"></td><td>" + string + "</td></tr>";
        }
        html += "</table></html>";
        lblArchivosDescargadosCorrectamente.setText(html);
//        this.pack();
//        this.setLocationRelativeTo(null);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pnlFondo = new javax.swing.JPanel();
        lbllogo = new javax.swing.JLabel();
        lblDescripcion = new javax.swing.JLabel();
        jPbInstalar = new javax.swing.JProgressBar();
        jBtnInstalacionPersonalizada = new javax.swing.JButton();
        jBtnActualizarAplicacion = new javax.swing.JButton();
        jBtnInstalarAplicacion = new javax.swing.JButton();
        scrArchivosDescargados = new javax.swing.JScrollPane();
        lblArchivosDescargadosCorrectamente = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle(".:: Instalador de Proffline ::.");

        pnlFondo.setBackground(new java.awt.Color(255, 255, 255));

        lbllogo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/promesa/img/logo_promesa2.jpg"))); // NOI18N

        lblDescripcion.setText("<html>PROFFLINE es una herramienta que permitirá a la fuerza de ventas de PROMESA registrar en línea o fuera de línea pedidos de clientes, devoluciones, proformas, cotizaciones, pagos y anticipos.</html>");

        jBtnInstalacionPersonalizada.setText("Instalación Personalizada");
        jBtnInstalacionPersonalizada.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnInstalacionPersonalizadaActionPerformed(evt);
            }
        });

        jBtnActualizarAplicacion.setText("Actualizar Aplicación");
        jBtnActualizarAplicacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnActualizarAplicacionActionPerformed(evt);
            }
        });

        jBtnInstalarAplicacion.setText("Instalar Aplicación");
        jBtnInstalarAplicacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnInstalarAplicacionActionPerformed(evt);
            }
        });

        scrArchivosDescargados.setBackground(new java.awt.Color(255, 255, 255));
        scrArchivosDescargados.setBorder(null);

        lblArchivosDescargadosCorrectamente.setBackground(new java.awt.Color(255, 255, 255));
        lblArchivosDescargadosCorrectamente.setOpaque(true);
        scrArchivosDescargados.setViewportView(lblArchivosDescargadosCorrectamente);

        jLabel1.setText("<html><u>Archivos descargados</u></html>");

        javax.swing.GroupLayout pnlFondoLayout = new javax.swing.GroupLayout(pnlFondo);
        pnlFondo.setLayout(pnlFondoLayout);
        pnlFondoLayout.setHorizontalGroup(
            pnlFondoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlFondoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlFondoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(scrArchivosDescargados, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE)
                    .addComponent(lblDescripcion, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE)
                    .addComponent(lbllogo, javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlFondoLayout.createSequentialGroup()
                        .addComponent(jBtnInstalarAplicacion, javax.swing.GroupLayout.PREFERRED_SIZE, 123, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 32, Short.MAX_VALUE)
                        .addComponent(jBtnActualizarAplicacion)
                        .addGap(40, 40, 40)
                        .addComponent(jBtnInstalacionPersonalizada))
                    .addComponent(jPbInstalar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE)
                    .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 477, Short.MAX_VALUE))
                .addContainerGap())
        );
        pnlFondoLayout.setVerticalGroup(
            pnlFondoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlFondoLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lbllogo)
                .addGap(1, 1, 1)
                .addComponent(lblDescripcion, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(scrArchivosDescargados, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPbInstalar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(13, 13, 13)
                .addGroup(pnlFondoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jBtnActualizarAplicacion)
                    .addComponent(jBtnInstalacionPersonalizada)
                    .addComponent(jBtnInstalarAplicacion))
                .addContainerGap())
        );

        getContentPane().add(pnlFondo, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void jBtnInstalacionPersonalizadaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnInstalacionPersonalizadaActionPerformed
    archivosDescargadosCorrectamente = new ArrayList<String>();
    DialogoArchivo dlgArchivo = new DialogoArchivo(this, true, Util.obtenerListaNombreArchivosFTP());
    dlgArchivo.setVisible(true);
}//GEN-LAST:event_jBtnInstalacionPersonalizadaActionPerformed

private void jBtnActualizarAplicacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnActualizarAplicacionActionPerformed
    archivosDescargadosCorrectamente = new ArrayList<String>();
    BarraHilo barraHilo = new BarraHilo(2);
    barraHilo.start();
}//GEN-LAST:event_jBtnActualizarAplicacionActionPerformed

private void jBtnInstalarAplicacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnInstalarAplicacionActionPerformed
    archivosDescargadosCorrectamente = new ArrayList<String>();
    BarraHilo barraHilo = new BarraHilo(1);
    barraHilo.start();
}//GEN-LAST:event_jBtnInstalarAplicacionActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {

        try {
            UIManager.setLookAndFeel(
                    UIManager.getSystemLookAndFeelClassName());
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Windows Classic".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (UnsupportedLookAndFeelException e) {
            // handle exception
        } catch (ClassNotFoundException e) {
            // handle exception
        } catch (InstantiationException e) {
            // handle exception
        } catch (IllegalAccessException e) {
            // handle exception
        }

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new VentanaPrincipal().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jBtnActualizarAplicacion;
    private javax.swing.JButton jBtnInstalacionPersonalizada;
    private javax.swing.JButton jBtnInstalarAplicacion;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JProgressBar jPbInstalar;
    private javax.swing.JLabel lblArchivosDescargadosCorrectamente;
    private javax.swing.JLabel lblDescripcion;
    private javax.swing.JLabel lbllogo;
    private javax.swing.JPanel pnlFondo;
    private javax.swing.JScrollPane scrArchivosDescargados;
    // End of variables declaration//GEN-END:variables

    public static VentanaPrincipal obtenerInstancia() {
        if (instancia == null) {
            instancia = new VentanaPrincipal();
        }
        return instancia;
    }

    public void establecerEstadoBarraProgreso(boolean bandera) {
        jPbInstalar.setIndeterminate(bandera);
    }
    
    public void establecerValoresBarraProgreso(int minimo, int maximo) {
        jPbInstalar.setIndeterminate(false);
        jPbInstalar.setMinimum(minimo);
        jPbInstalar.setMaximum(maximo);
        jPbInstalar.setValue(minimo);
    }
    
    public void establecerValorBarraProgreso(int valor) {
        jPbInstalar.setValue(valor);
    }

    public JButton getjBtnActualizarAplicacion() {
        return jBtnActualizarAplicacion;
    }

    public void setjBtnActualizarAplicacion(JButton jBtnActualizarAplicacion) {
        this.jBtnActualizarAplicacion = jBtnActualizarAplicacion;
    }

    public JButton getjBtnInstalacionPersonalizada() {
        return jBtnInstalacionPersonalizada;
    }

    public void setjBtnInstalacionPersonalizada(JButton jBtnInstalacionPersonalizada) {
        this.jBtnInstalacionPersonalizada = jBtnInstalacionPersonalizada;
    }

    public JButton getjBtnInstalarAplicacion() {
        return jBtnInstalarAplicacion;
    }

    public void setjBtnInstalarAplicacion(JButton jBtnInstalarAplicacion) {
        this.jBtnInstalarAplicacion = jBtnInstalarAplicacion;
    }
}
